#[macro_export]
macro_rules! block_on {
    ($($future:expr),*) => {{
    use std::collections::VecDeque;
    use crate::do_async::DoAsync;
    let mut executor = Executor::new();
    let mut context = executor.context();
    let mut future_deque = VecDeque::new();
    $(future_deque.push_back(Box::pin($future)));*;
    while let Some(mut c) = future_deque.pop_front() {
        match c.my_do_future(&mut context) {
            Poll::Ready(i) => { println!("-------{i}-------") }
            Poll::Pending => { future_deque.push_back(c) }
        }
    }}
    };
}
